/**
 * @author jltxseo
 *         Created by junlintianxia on 2017/06/14.
 */

/**
 * 枚举
 */

enum class Lang(val hello:String){
    ENGLISH("英语"),
    CHINESE("中文"),
    JAPANESE("日语"),
    KOREAN("韩语");

    fun sayHello(){
        println(hello)
    }

    //半生对象，相当于java里面的static方法
    companion object{
        fun parse(name: String):Lang{
            return Lang.valueOf(name.toUpperCase())
        }
    }
}

/**
 * 入口函数
 */
fun main(args: Array<String>){
    val lang = Lang.CHINESE
    lang.sayHello()
    lang.sayBye()
    var value1 = singletonList(1)
    println("$value1")
    var value2 = Int.basicToString()
    println("$value2")
}


/**
 * 扩展方法
 */
fun Lang.sayBye(){
    val bye = when(this){
        Lang.ENGLISH -> "英语再见"
        Lang.CHINESE -> "中文再见"
        Lang.JAPANESE -> "日语再见"
        Lang.KOREAN -> "韩语再见"
    }
    println(bye)
}

fun <T> singletonList(item: T): List<T> { //泛型函数
    return arrayListOf<T>(item)
}

fun <T> T.basicToString(): String {  // 泛型扩展函数
    return "doString"
}



